home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Resources / Online / CheckHTML / rexx / CheckHTML.rexx
OS/2 REXX Batch file  |  1999-12-05  |  3KB  |  103 lines

  1. /*
  2.   CheckHTML ARexx script for server side include (ssi) support
  3.  
  4.   Copyright © 1999 Dipl.-Inform. Kai Hofmann
  5.   All rights reserved!
  6.   Released without any explicit or implicit warranty!
  7.  
  8.   EMail: hofmann@hofmann-int.de
  9.   WWW  : http://www.hofmann-int.de/products/amiga/CheckHTML.shtml
  10.  
  11.   $VER: CheckHTML.rexx 1.0 (28.11.99)
  12.  
  13.   Param:
  14.     - in file
  15.     - out file
  16.     - root directory
  17. */
  18.  
  19. OPTIONS RESULTS
  20.  
  21. PARSE ARG INFILENAME " " OUTFILENAME " " ROOT
  22. IF (OPEN(INFILE,INFILENAME,READ)) THEN DO
  23.   IF (OPEN(OUTFILE,OUTFILENAME,WRITE)) THEN DO
  24.     DO WHILE ~EOF(INFILE)
  25.       line = READLN(INFILE)
  26.       IF EOF(INFILE) THEN BREAK
  27.       /* include ? */
  28.       ipos =  POS("<!--#include ",line)
  29.       IF ipos = 0 THEN DO
  30.         WRITELN(OUTFILE,line)
  31.       END
  32.       ELSE DO
  33.         /* file or virtual ? */
  34.         ipos =  POS("file=",line)
  35.         IF ipos = 0 THEN DO
  36.           ipos =  POS("virtual=",line)
  37.           IF ipos = 0 THEN DO
  38.             WRITELN(OUTFILE,line)
  39.             SAY "ERROR: include syntax error:" line
  40.           END
  41.           ipos = ipos + 9
  42.         END
  43.         ELSE DO
  44.           ipos = ipos + 6
  45.         END
  46.         /* get filename */
  47.         length = POS('"',line,ipos+1) - ipos
  48.         incfilename = SUBSTR(line,ipos,length)
  49.         /* transform Unix to Amiga */
  50.         IF LEFT(incfilename,1) == "/" THEN DO
  51.           IF ROOT == "" THEN DO
  52.             incfilename = DELSTR(incfilename,1,1)
  53.            END
  54.           ELSE DO
  55.             IF RIGHT(ROOT,1) == "/" THEN DO
  56.               ROOT = DELSTR(ROOT,LENGTH(ROOT),1)
  57.             END
  58.             incfilename = ROOT || incfilename
  59.           END
  60.         END
  61.         ELSE DO
  62.           ippos = LASTPOS("/",INFILENAME)
  63.           IF ippos = 0 THEN DO
  64.             ippos = LASTPOS(":",INFILENAME)
  65.             IF ippos > 0 THEN DO
  66.               incfilename = LEFT(INFILENAME,ippos) || incfilename
  67.             END
  68.           END
  69.           ELSE DO
  70.             incfilename = LEFT(INFILENAME,ippos) || incfilename
  71.           END
  72.         END
  73.         ipos = POS("..",incfilename)
  74.         DO WHILE ipos > 0
  75.           incfilename = DELSTR(incfilename,ipos,2)
  76.           ipos = POS("..",incfilename)
  77.         END
  78.         /* include file */
  79.         IF (OPEN(incfile,incfilename,READ)) THEN DO
  80.           DO WHILE ~EOF(incfile)
  81.             line = READLN(incfile)
  82.             IF EOF(incfile) THEN BREAK
  83.             WRITELN(OUTFILE,line)
  84.           END
  85.           CLOSE(incfile)
  86.         END
  87.         ELSE DO
  88.           WRITELN(OUTFILE,line)
  89.           SAY "ERROR: Can not open" incfilename
  90.         END
  91.       END
  92.     END
  93.     CLOSE(OUTFILE)
  94.   END
  95.   ELSE DO
  96.     SAY "ERROR: Can not open" OUTFILE
  97.   END
  98.   CLOSE(INFILE)
  99. END
  100. ELSE DO
  101.   SAY "ERROR: Can not open" INFILE
  102. END
  103.